 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Entities;
using Logic;

namespace Program
{
    public partial class Form1 : Form
    {
        private int i = -1, y = -1;
        private int totalPrice = 0;
        private double totalWeight = 0;
        private int totalCount = 0;
        private int count = 0;
        private int number = 0;

        public Form1()
        {
            InitializeComponent();
            label6.Text = "";

            comboBox1.Items.Add("Шоколадная плитка");
            comboBox1.Items.Add("Батончик");
            comboBox1.Items.Add("Конфеты");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                count = int.Parse(textBox1.Text);

                if (count != 0 && i != -1 && y != -1)
                {
                    number++;

                    if (number < 19)
                    {
                        label6.Text = "Продукт добавлен!";

                        Gift gift = GiftFactory.CreateGift(i, y);
                        GiftCalculator giftCalculator = new GiftCalculator();

                        totalWeight += giftCalculator.CalculateWeight(gift, count);
                        totalPrice += giftCalculator.CalculatePrice(gift, count);
                        totalCount += giftCalculator.CalculateCount(gift, count);

                        label4.Text = "Общий вес, г: " + totalWeight.ToString();
                        label5.Text = "Общая цена, руб: " + totalPrice.ToString();
                        label7.Text = "Общее кол-во, шт: " + totalCount.ToString();

                        if (i == 0)
                        {
                            if (y == 0)
                            {
                                listBox1.Items.Add("\"Милка\"");
                                listBox2.Items.Add("Цена: 60 руб");
                                listBox3.Items.Add("Вес: 110 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 1)
                            {
                                listBox1.Items.Add("\"Воздушный\"");
                                listBox2.Items.Add("Цена: 45 руб");
                                listBox3.Items.Add("Вес: 100 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 2)
                            {
                                listBox1.Items.Add("\"Альпен Голд\"");
                                listBox2.Items.Add("Цена: 38 руб");
                                listBox3.Items.Add("Вес: 90 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                        }
                        else if (i == 1)
                        {
                            if (y == 0)
                            {
                                listBox1.Items.Add("\"Сникерс\"");
                                listBox2.Items.Add("Цена: 35 руб");
                                listBox3.Items.Add("Вес: 100 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 1)
                            {
                                listBox1.Items.Add("\"Марс\"");
                                listBox2.Items.Add("Цена: 30 руб");
                                listBox3.Items.Add("Вес: 80 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 2)
                            {
                                listBox1.Items.Add("\"Твикс\"");
                                listBox2.Items.Add("Цена: 38 руб");
                                listBox3.Items.Add("Вес: 100 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                        }
                        else if (i == 2)
                        {
                            if (y == 0)
                            {
                                listBox1.Items.Add("\"Коровка\"");
                                listBox2.Items.Add("Цена: 150 руб");
                                listBox3.Items.Add("Вес: 500 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 1)
                            {
                                listBox1.Items.Add("\"Жук\"");
                                listBox2.Items.Add("Цена: 180 руб");
                                listBox3.Items.Add("Вес: 500 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                            else if (y == 2)
                            {
                                listBox1.Items.Add("\"Газировка\"");
                                listBox2.Items.Add("Цена: 120 руб");
                                listBox3.Items.Add("Вес: 500 г");
                                listBox4.Items.Add(count.ToString() + " шт");
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Cписок полностью заполнен! Очистите его!");
                    }
                }
                else
                {
                    label6.Text = "Заполните поля!";
                }
            }
            catch
            {
                label6.Text = "Введите корректные данные!";
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex == 0)
            {
                i = 0;
                comboBox2.Items.Clear();
                comboBox2.Items.Add("Милка");
                comboBox2.Items.Add("Воздушный");
                comboBox2.Items.Add("Альпен Голд");
            }
            else if (comboBox1.SelectedIndex == 1)
            {
                i = 1;
                comboBox2.Items.Clear();
                comboBox2.Items.Add("Сникерс");
                comboBox2.Items.Add("Марс");
                comboBox2.Items.Add("Твикс");
            }
            else if (comboBox1.SelectedIndex == 2)
            {
                i = 2;
                comboBox2.Items.Clear();
                comboBox2.Items.Add("Коровка");
                comboBox2.Items.Add("Жук");
                comboBox2.Items.Add("Газировка");
            }
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox2.SelectedIndex == 0) { y = 0; }
            else if (comboBox2.SelectedIndex == 1) { y = 1; }
            else if (comboBox2.SelectedIndex == 2) { y = 2; }
            else if (comboBox2.SelectedIndex == 3) { y = 3; }
        }

        private void textBox1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            label6.Text = "";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            totalPrice = 0;
            totalWeight = 0;
            totalCount = 0;
            count = 0;
            number = 0;
            textBox1.Text = "";
            listBox1.Items.Clear();
            listBox2.Items.Clear();
            listBox3.Items.Clear();
            listBox4.Items.Clear();
            label4.Text = "Общий вес, г: ";
            label5.Text = "Общая цена, руб: ";
            label7.Text = "Общее кол-во, шт: ";
        }
    }
}
